// matrcie_allocata_dinamicamente.cpp : Defines the entry point for the console application.
//
/*
scrivere un programma che richieda in input il numero di righe e di colonne di una matrice allochi dinamicamente la matrice carichi in modo randoma
la matreice visualizza la matrice e visualizza la somma degli e elemtni sulla diagonale pricipale e sulla diagonale secondaria
dealloca la matice
*/

#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;


int main()
{
	int **matr = 0;
	int c = 0;
	int r = 0;
	int somma1 = 0;
	int somma2 = 0;
	//leggo il numero di righe e di colonne 
	printf("inserire il numero delle righe\n");
	scanf_s("%d", &r, sizeof(int));
	printf("inserire il numero delle colonne\n");
	scanf_s("%d", &c, sizeof(int));
	//alloco il numero di righe
	matr = (int**)malloc(r * sizeof(int));
	//alloco il numero delle colonne
	for (int i = 0; i < r; i++) {
		matr[i] = (int*)malloc(c * sizeof(int));

	}
	//carcato randoo una matrice
	for (int u = 0; u < r; u++) {
		for (int j = 0; j < c; j++) {
			matr[u][j] = 0 + rand() % (10);
		}
	}
	//calcolo le diagonali
	for (int o = 0; o < r; o++) {
		for (int p = 0; p < c; p++) {
			if (o == p) {
				somma1 += matr[o][p];
			}
			if ((o + p) == (r - 1)) {
				somma2 += matr[o][p];
			}
		}
	}
	for (int q = 0; q < r; q++) {
		for (int a = 0; a < c; a++) {
			printf("%d ", matr[q][a]);
		}
		printf("\n");

	}
	printf("diagloanle primaria %d \n", somma1);
	printf("diagonale secondaria %d \n", somma2);


	//dealloco  le colonne
	for (int z = 0; z < r; z++) {
		free(matr[z]);
	}
	//dealloco le righe
	free(matr);

	system("pause");
    return 0;
}
